package satk.beans.view;

import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import satk.objetos.Evento;

/**
 * <h3>AdminEventosBean.java</h3>
 * <div><em>Fecha de creación: 1/05/2011, 01:55:06 PM.</em></div>
 * <p></p>
 * @author Sergio Flores Genis <sf.cancun@gmail.com>
 */
@ManagedBean
@ViewScoped
public class AdminEventosBean
        extends satk.beans.ProcessDataBase<Evento>
        implements Serializable {

    private static final long serialVersionUID = 22699187L;
    private Evento newEvento = null;

    public AdminEventosBean() {
        super();
        newEvento = new Evento();
    }

    public Evento getNewEvento() {
        return newEvento;
    }

    @Override
    public String add(Evento e) {
        resultError = false;
        if(e.getFechaTermino().before(e.getFechaInicio())){
            resultCode = 0;
            resultError = true;
            resultMessage = "La fecha de termino tiene que ser despues de la fehca de inicio";
        }
        if(e.getFechaCierreInscripciones().after(e.getFechaInicio())){
            resultCode = 0;
            resultError = true;
            resultMessage = "El cierre de inscripciones tiene que ser antes del la de inicio";
        }
        
        try {
            e.setOrganizador("INSTITUTO POLITECNICO NACIONAL");
            resultCode = new satk.database.ManagerEvento().add(e);
            resultMessage = "Torneo creado exitosamente";
        } catch (java.sql.SQLException ex) {
            Logger.getLogger(AdminEventosBean.class.getName()).log(Level.SEVERE,
                    "Error al crear el nuevo torneo", ex);
            resultCode = ex.getErrorCode();
            resultMessage = ex.getErrorCode() + " " + ex.getMessage();
            resultError = true;
        }
        result = true;
        return null;
    }

    @Override
    public String edit(Evento o, Evento n) {
        try {
            resultCode = new satk.database.ManagerEvento().update(o, n);
            resultMessage = n.getNombre() + " actualizada exitosamente.";
        } catch (java.sql.SQLIntegrityConstraintViolationException ex) {
            Logger.getLogger(AdminEventosBean.class.getName()).log(Level.SEVERE,
                    "Nombre o siglas de institución duplicadas", ex);
            resultCode = ex.getErrorCode();
            resultMessage = "Ya existe una institución con el mismo nombre o/y siglas.";
            resultError = true;
        } catch (java.sql.SQLException ex) {
            Logger.getLogger(AdminEventosBean.class.getName()).log(Level.SEVERE,
                    "Error al actualizar la instición", ex);
            resultCode = ex.getErrorCode();
            resultMessage = ex.getSQLState() + " " + ex.getMessage();
            resultError = true;
        }
        result = true;
        return null;
    }

    /** <h1>No soportado</h1> */
    @Override
    public String del(Evento e) {
        throw new UnsupportedOperationException("No se permite eliminar una evento.");
    }

    @Override
    public String actionSaveEdit(Evento e) {
        int id = e.getIdentificador().intValue();
        if (isBeingEdited(id)) {
            edit(getCtrlEdit().get(id), e);
            actionCancelEdit(id);
        }
        return null;
    }

    /** <h1>No soportado</h1> */
    @Override
    public String actionSaveEditAll() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /** <h1>No soportado</h1> */
    @Override
    public String actionSaveRemove(Evento e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /** <h1>No soportado</h1> */
    @Override
    public String actionSaveRemoveAll() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
